"""
异步加载的数据包 怎么抓？
目的 爬取豆瓣电影的评分 图片链接 电影名    主要是讲爬取抓包方法  不是为了数据

抓包  确认数据
发送请求 返回响应
保存数据

我们抓的数据 已经明确了是 异步加载出来的数据 （因为数据是增量式增加的 ）


抓包注意的重点   在抓文本型数据的时候  response标签和preview里面都有数据  看谁 先看 preview来决定数据提取方法

观察发现需要抓取的数据是json格式数据   （但是要明确 从网络上爬下来的数据 都是字符串类型的数据）

"""

import requests
import re

# 数据包
url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0"

# 构建请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36",
    "X-Requested-With": "XMLHttpRequest"
}

# 发送请求
response = requests.get(url=url, headers=headers)
# 讲返回的数据(str)赋值给data
data = response.content.decode()
# <class 'str'> 需要明确的重点 从网络上爬下来的数据 都是字符串类型的数据
# print(data,type(data))
# json格式数据 其实就可以理解为字典  （可以进行字典取值   可以 （数据需要是字典形式的才能以键取值进行数据提取 ））

# 已知条件  是str类型   要提取相关数据  可以用到re模块

# 数据清洗位置   findall 是对整个字符串进行扫描 返回正则表达式匹配的列表
# 标题   直接搞秒杀re语法
# 重点 写匹配语法的时候 先打印所有的数据在控制台 不要拿网页的字符串作为匹配标杆针对于  json格式
# 注意点  匹配语法用单引号 正则表达式里面就必须用双引号   反则亦可   注意返回的数据基本都是双引号的
title = re.findall('"title":"(.*?)"', data)
# print(title)
# 链接
link = re.findall('"cover":"(.*?)"', data)
# print(link)

score = re.findall('"rate":"(.*?)"', data)
# print(score)

# zip函数 拉链函数   可以同时传入多个可迭代对象 就行压缩  在被遍历时 返回每个可迭代对象的第n个   n+1  n+2
# 返回的是一个个元组
# 长度不一样，以最短的为准
for i in zip(title, link, score):
    print(i)

"""
抓取异步翻页数据包 
点击ajax请求方法 按钮  

就在network抓包   同样的和同步加载数据包一样  找url变化位置 
 
第二页 
https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=20
第三页
https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=40
第四页
https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=60
page_start在以每次请求 20递增     没有变化 page_limit

作为 小练习(参考上次的作业讲解)  

关于ajax请求的 一些小tips     在进行ajax请求构建 headers表单时 需要注意要添加关键参数     
X-Requested-With: XMLHttpRequest     表示本次请求是一个ajax请求 

headers={
    "X-Requested-With":"XMLHttpRequest"}

"""
